home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 March
/
PCWorld_2007-03_cd.bin
/
temacd
/
maxthon
/
mcombo.exe
/
Plugin
/
Digg Sidebar
/
scripts
/
Digg.js
next >
Wrap
Text File
|
2006-08-31
|
8KB
|
287 lines
/**************************
Digg Sidebar
By Neo101
Version 1.0.0
**************************/
checkSettingsFile()
var itemsOnPage = parseInt( readSetting('itemsOnPage', '10') )
var categoryFeed = readSetting('categoryFeed', 'containertechnology.xml')
var categoryUpcomingFeed = readSetting('categoryUpcomingFeed', 'containertechnology.xml')
var category = readSetting('category', 'technology')
var categoryUpcoming = readSetting('categoryUpcoming', 'technology')
var showLoadingMessage = readSetting('showLoadingMessage', '1')
var loadedUpcoming = false
var popular = new Array()
var upcoming = new Array()
var searchResults = new Array()
var element
var start
var xmlhttp
var feeds = {'technology':
['containertechnology', 'indexapple', 'indexdesign', 'indexgadgets', 'indexhardware',
'indextech_news', 'indexlinux_unix', 'indexmods', 'indexprogramming', 'indexsecurity',
'indexsoftware', 'indextech_deals'],
'science':
['containerscience', 'indexspace', 'indexenvironment', 'indexhealth', 'indexgeneral_sciences'],
'world_business':
['containerworld_business', 'indexbusiness_finance', 'indexpolitics', 'indexpolitical_opinion',
'indexworld_news', 'indexoffbeat_news'],
'sports':
['containersports', 'indexbaseball', 'indexbasketball', 'indexextreme_sports', 'indexfootball',
'indexgolf', 'indexhockey', 'indexmotorsport', 'indexsoccer', 'indextennis', 'indexother_sports'],
'videos':
['containervideos', 'indexvideos_animation', 'indexvideos_comedy', 'indexvideos_educational',
'indexvideos_gaming', 'indexvideos_music', 'indexvideos_people', 'indexvideos_sports'],
'entertainment':
['containerentertainment', 'indexcelebrity', 'indexmovies', 'indexmusic', 'indextelevision'],
'gaming':
['containergaming', 'indexgaming_news', 'indexplayable_web_games']
}
window.onload = function(){
viewPopularFeed()
setSelectBox('category', 'category')
setSelectBox('categoryUpcoming', 'categoryUpcoming')
setSubCategory('subCategoryDiv', category, categoryFeed)
setSubCategory('subCategoryUpcomingDiv', categoryUpcoming, categoryUpcomingFeed)
}
function viewPopularFeed(){
var url = 'http://digg.com/rss/' + categoryFeed
element = 'popular'
start = 0
loadXMLDoc(url, onResponseView)
if(showLoadingMessage == '1'){
document.getElementById( 'popular' ).insertAdjacentHTML('afterBegin', '<div class=loading>Loading...</div>')
}
}
function viewUpcomingFeed(){
var url = 'http://digg.com/rss/' + categoryUpcomingFeed
element = 'upcoming'
start = 0
loadXMLDoc(url, onResponseView)
if(showLoadingMessage == '1'){
document.getElementById( 'upcoming' ).insertAdjacentHTML('afterBegin', '<div class=loading>Loading...</div>')
}
}
function search(){
var keywords = document.getElementById('keywords').value
if(keywords == ''){
document.getElementById('searchResults').innerHTML = 'Please enter a keyword!'
return
}
var area = 'all'
var type = 'both'
var age = 'all'
var url = 'http://digg.com/rss_search?area=' + area + '&type=' + type + '&age=' + age + '&search=' + keywords
element = 'searchResults'
start = 0
document.getElementById('searchResults').innerHTML = 'Loading....<br>This could take a while...'
loadXMLDoc(url, onResponseView)
}
function loadXMLDoc(url, stateChange){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
xmlhttp.onreadystatechange = stateChange;
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("User-Agent","Maxthon Digg Sidebar 1.0")
xmlhttp.send(null)
}
function checkReadyState(obj){
if(obj.readyState == 4){
if(obj.status == 200 || obj.status == 201){
return true;
}
else{
showError(obj.status + ' ' + obj.responseText);
}
}
}
function onResponseView(){
if( ! checkReadyState(xmlhttp) ){
return
}
var responseXML = xmlhttp.responseXML
if(responseXML == null){
showError('Error 212: Could not parse feed <br>Make sure Digg is working')
return
}
var response = '<ul>'
var rssFeeds = new Array()
items = responseXML.getElementsByTagName("item")
if(items && items.length != 0 ){
for(var j=0; j < items.length; j++) {
addFeedItem(items[j], rssFeeds)
}
}
else{
response += '<b>Nothing found</b>'
}
response += writeFeedHtml( rssFeeds )
document.getElementById(element).innerHTML = response
eval( element + ' = rssFeeds ')
createNextPreviousLinks()
}
function writeFeedHtml( array){
var response = '<ul>'
for(var i=0; i<array.length && i<itemsOnPage; i++){
var item = array[i]
response += '<li>'+
'<a href="' + item.link + '" target=_blank class=title title="' + item.tooltip + '">' + item.title + '</a>' +
//'<h3 onclick="expandCollapse(this)">' + item.title + '</h3>' +
//'<div style="display:none">' + item.tooltip + '</div>'
'<\/li>'
}
response += '<\/ul>'
return response
}
function addFeedItem( item , array){
var title = ''
var link = ''
var description = ''
var pubDate = ''
var diggCounter = ''
var diggCategory = ''
var diggCommentCount = ''
var nodes = item.childNodes
for(var i=0; i < nodes.length; i++){
var tagName = nodes(i).tagName
var tagText = nodes(i).text
if(tagName=='title'){
title = replacer(tagText)
}
else if(tagName=='link'){
link = tagText
}
else if(tagName=='description'){
description = replacer(tagText)
}
else if(tagName=='pubDate'){
pubDate = replacer(tagText)
}
else if(tagName=='digg:diggCount'){
diggCounter = replacer(tagText)
}
else if(tagName=='digg:category'){
diggCategory = replacer(tagText)
}
else if(tagName=='digg:commentCount'){
diggCommentCount = replacer(tagText)
}
}
var tooltip = description
tooltip += '\nDate: ' + pubDate
if(diggCounter != ''){
tooltip += '\nDigg Count: ' + diggCounter
}
if(diggCommentCount != ''){
tooltip += '\nDigg Comment Count: ' + diggCommentCount
}
tooltip += '\nDigg Category: ' + diggCategory
if(title != '' && link != ''){
array.push( {'title':title,
'link':link,
'description':description,
'tooltip':tooltip,
'pubDate':pubDate,
'diggCounter':diggCounter,
'diggCategory':diggCategory
} )
}
}
function createNextPreviousLinks(){
var next = start + itemsOnPage
var previous = start - itemsOnPage
var nextPreviousHTML = ''
if( previous >= 0 ){
nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + previous + ')" class=prevNext>« Previous</a>'
}
if( previous >= 0 && next < 40 ){
nextPreviousHTML += '<span style="width:30px"></span>'
}
if( next < 40 ){
nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + next + ')" class=prevNext>Next »</a>'
}
document.getElementById(element + 'NextPreviousHead').innerHTML = nextPreviousHTML
document.getElementById(element + 'NextPreviousBottom').innerHTML = nextPreviousHTML
}
function showFeedPart(element, start){
eval('var array = ' + element)
top.start = start
top.element = element
array = array.slice(start,start + itemsOnPage)
var response = '<ul>'
response += writeFeedHtml( array )
response += '</ul>'
document.getElementById(element).innerHTML = response
createNextPreviousLinks()
}
function replacer(s){
return s.replace(/&/g,'&').replace(/"|"/g,'');
}
function setSelectBox(id, feed){
var selectElement = document.getElementById(id)
for(var i=0; i<selectElement.options.length; i++){
if( eval('selectElement.options[i].value.search(' + feed + ') != -1') ){
selectElement.selectedIndex = i
}
}
}